package cn.cqs.redisitem.linestructure;

/**
 * @discription :双向链表循环
 * @author: cqs
 * @date: 2020-09-12 15:52
 */
public class DoubleLoopNode {

    //    数据内容
    private int data;
    //    上一个节点（只有一个节点，自己本身）
    DoubleLoopNode pre = this;
    //    下一个节点
    DoubleLoopNode next = this;


    public DoubleLoopNode(int data) {
        this.data = data;
    }

    /**
     * 功能描述 :
     *
     * @param node:
     * @return void
     * @author cqs
     * @date 2020/9/12
     */

    public void after(DoubleLoopNode node) {
        DoubleLoopNode currentNode=this;
//        原节点的下一个节点（old next node）
        DoubleLoopNode oldNextNode=currentNode.next;
//        当前节点的下一个节点指向新节点
        currentNode.next=node;
//        新节点上一个节点为当前节点
        node.pre=currentNode;

//        新节点的下一个节点指向旧节点
        node.next=oldNextNode;
//        旧的节点上一个节点指向新节点
        oldNextNode.pre=node;

    }


    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }

    public DoubleLoopNode getPre() {
        return pre;
    }

    public void setPre(DoubleLoopNode pre) {
        this.pre = pre;
    }

    public DoubleLoopNode getNext() {
        return next;
    }

    public void setNext(DoubleLoopNode next) {
        this.next = next;
    }
}
